import logging
from logging.handlers import RotatingFileHandler, TimedRotatingFileHandler

# 创建一个 logger 对象
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)

# 创建一个控制台处理器
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)

# 创建一个文件处理器
# file_handler = logging.FileHandler('app.log')

# 创建一个 TimedRotatingFileHandler，按天进行轮转，最多保留 7 个备份文件
# file_handler = TimedRotatingFileHandler('app.log', when='D', interval=1, backupCount=7)

# 创建一个 RotatingFileHandler，设置最大文件大小为 1MB，最多保留 3 个备份文件
file_handler = RotatingFileHandler('app.log', maxBytes=1024*1024, backupCount=3)
file_handler.setLevel(logging.DEBUG)

# 创建一个日志格式器
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(filename)s:%(lineno)d - %(message)s')

# 将格式器添加到处理器
console_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)

# 将处理器添加到 logger 对象
logger.addHandler(console_handler)
logger.addHandler(file_handler)

if __name__ == '__main__':

    # 测试日志输出
    logger.debug('This is a debug message')
    logger.info('This is an info message')
    logger.warning('This is a warning message')
    logger.error('This is an error message')
    logger.critical('This is a critical message')

    # 测试日志输出
    for i in range(10000):
        logger.debug(f'This is a debug message {i}')